package it.polimi.TravelDreamEAR.ejb.entities;

import it.polimi.TravelDreamEAR.ejb.sessionBeans.dto.PacchettoDTO;

import java.io.Serializable;

import javax.persistence.*;

import org.apache.commons.codec.digest.DigestUtils;

import java.util.ArrayList;
import java.util.Date;
import java.util.List;


/**
 * The persistent class for the pacchetto database table.
 * 
 */
@Entity
@NamedQuery(name="Pacchetto.findAll", query="SELECT p FROM Pacchetto p")
public class Pacchetto implements Serializable {
	private static final long serialVersionUID = 1L;

	@Id
	private String nome;

	private String dataArrivo;

	private String dataPartenza;

	private String destinazione;

	private int prezzo;

	//bi-directional many-to-one association to IstanzaPacchetto
	@OneToMany(mappedBy="pacchettoBean")
	private List<IstanzaPacchetto> istanzaPacchettos;

	//bi-directional many-to-one association to Amministratore
	@ManyToOne
	@JoinColumn(name="AMMINISTRATORE")
	private Amministratore amministratoreBean;
	
	//bi-directional many-to-one association to Hotel
	@ManyToOne
	@JoinColumn(name="HOTEL")
	private Hotel hotel;

	//bi-directional many-to-many association to Escursioni
	@ManyToMany
	@JoinTable(
		name="pacchetto_escursioni"
		, joinColumns={
			@JoinColumn(name="PACCHETTO")
			}
		, inverseJoinColumns={
			@JoinColumn(name="ESCURSIONE")
			}
		)
	private List<Escursioni> escursionis;

	//bi-directional many-to-one association to Impiegato
	@ManyToOne
	@JoinColumn(name="IMPIEGATO")
	private Impiegato impiegatoBean;

	//bi-directional many-to-one association to PacchettoAmministratore
	@OneToMany(mappedBy="pacchettoBean")
	private List<PacchettoAmministratore> pacchettoAmministratores;

	//bi-directional many-to-one association to PacchettoCliente
	@OneToMany(mappedBy="pacchettoBean")
	private List<PacchettoCliente> pacchettoClientes;

	//bi-directional many-to-one association to PacchettoImpiegato
	@OneToMany(mappedBy="pacchettoBean")
	private List<PacchettoImpiegato> pacchettoImpiegatos;

	public Pacchetto() {
		this.escursionis=new ArrayList<Escursioni>();
	}
	
	public Pacchetto(PacchettoDTO pacchettoDTO) {
		this.nome=pacchettoDTO.getNome();
		this.dataArrivo=pacchettoDTO.getDataArrivo();
		this.dataPartenza=pacchettoDTO.getDataPartenza();
		this.destinazione=pacchettoDTO.getDestinazione();
		this.prezzo=pacchettoDTO.getPrezzo();
		;
	}

	public String getNome() {
		return this.nome;
	}

	public void setNome(String nome) {
		this.nome = nome;
	}

	public String getDataArrivo() {
		return this.dataArrivo;
	}

	public void setDataArrivo(String dataArrivo) {
		this.dataArrivo = dataArrivo;
	}

	public String getDataPartenza() {
		return this.dataPartenza;
	}

	public void setDataPartenza(String dataPartenza) {
		this.dataPartenza = dataPartenza;
	}

	public String getDestinazione() {
		return this.destinazione;
	}

	public void setDestinazione(String destinazione) {
		this.destinazione = destinazione;
	}

	public int getPrezzo() {
		return this.prezzo;
	}

	public void setPrezzo(int prezzo) {
		this.prezzo = prezzo;
	}

	public List<IstanzaPacchetto> getIstanzaPacchettos() {
		return this.istanzaPacchettos;
	}

	public void setIstanzaPacchettos(List<IstanzaPacchetto> istanzaPacchettos) {
		this.istanzaPacchettos = istanzaPacchettos;
	}

	public IstanzaPacchetto addIstanzaPacchetto(IstanzaPacchetto istanzaPacchetto) {
		getIstanzaPacchettos().add(istanzaPacchetto);
		istanzaPacchetto.setPacchettoBean(this);

		return istanzaPacchetto;
	}

	public IstanzaPacchetto removeIstanzaPacchetto(IstanzaPacchetto istanzaPacchetto) {
		getIstanzaPacchettos().remove(istanzaPacchetto);
		istanzaPacchetto.setPacchettoBean(null);

		return istanzaPacchetto;
	}

	public Amministratore getAmministratoreBean() {
		return this.amministratoreBean;
	}

	public void setAmministratoreBean(Amministratore amministratoreBean) {
		this.amministratoreBean = amministratoreBean;
	}

	public Hotel getHotel() {
		return hotel;
	}

	public void setHotel(Hotel hotel) {
		this.hotel = hotel;
	}

	public List<Escursioni> getEscursionis() {
		return this.escursionis;
	}

	public void setEscursionis(List<Escursioni> escursionis) {
		this.escursionis = escursionis;
	}

	public Impiegato getImpiegatoBean() {
		return this.impiegatoBean;
	}

	public void setImpiegatoBean(Impiegato impiegatoBean) {
		this.impiegatoBean = impiegatoBean;
	}

	public List<PacchettoAmministratore> getPacchettoAmministratores() {
		return this.pacchettoAmministratores;
	}

	public void setPacchettoAmministratores(List<PacchettoAmministratore> pacchettoAmministratores) {
		this.pacchettoAmministratores = pacchettoAmministratores;
	}

	public PacchettoAmministratore addPacchettoAmministratore(PacchettoAmministratore pacchettoAmministratore) {
		getPacchettoAmministratores().add(pacchettoAmministratore);
		pacchettoAmministratore.setPacchettoBean(this);

		return pacchettoAmministratore;
	}

	public PacchettoAmministratore removePacchettoAmministratore(PacchettoAmministratore pacchettoAmministratore) {
		getPacchettoAmministratores().remove(pacchettoAmministratore);
		pacchettoAmministratore.setPacchettoBean(null);

		return pacchettoAmministratore;
	}

	public List<PacchettoCliente> getPacchettoClientes() {
		return this.pacchettoClientes;
	}

	public void setPacchettoClientes(List<PacchettoCliente> pacchettoClientes) {
		this.pacchettoClientes = pacchettoClientes;
	}

	public PacchettoCliente addPacchettoCliente(PacchettoCliente pacchettoCliente) {
		getPacchettoClientes().add(pacchettoCliente);
		pacchettoCliente.setPacchettoBean(this);

		return pacchettoCliente;
	}

	public PacchettoCliente removePacchettoCliente(PacchettoCliente pacchettoCliente) {
		getPacchettoClientes().remove(pacchettoCliente);
		pacchettoCliente.setPacchettoBean(null);

		return pacchettoCliente;
	}

	public List<PacchettoImpiegato> getPacchettoImpiegatos() {
		return this.pacchettoImpiegatos;
	}

	public void setPacchettoImpiegatos(List<PacchettoImpiegato> pacchettoImpiegatos) {
		this.pacchettoImpiegatos = pacchettoImpiegatos;
	}

	public PacchettoImpiegato addPacchettoImpiegato(PacchettoImpiegato pacchettoImpiegato) {
		getPacchettoImpiegatos().add(pacchettoImpiegato);
		pacchettoImpiegato.setPacchettoBean(this);

		return pacchettoImpiegato;
	}

	public PacchettoImpiegato removePacchettoImpiegato(PacchettoImpiegato pacchettoImpiegato) {
		getPacchettoImpiegatos().remove(pacchettoImpiegato);
		pacchettoImpiegato.setPacchettoBean(null);

		return pacchettoImpiegato;
	}

}